#define _CRT_SECURE_NO_WARNINGS 1



#include<stdio.h>

//void* my_memcpy(void* a, const void* b, size_t n)
//{
//	void* c = a;
//	while (n--)
//	{
//		*(char*)a = *(char*)b;
//		a=(char*)a+1; b=(char*)b+1;
//	}
//	return c;
//}
//
//
//int main()
//{
//	int a[] = { 1,2,3,4,5,6,7,8 };
//	int b[20] = { 0 };
//	my_memcpy(b, a, 32);
//	
//	int i = 0;
//	for (i = 0; i < 20; i++)
//	{
//		printf("%d", b[i]);
//	}
//	return 0;
//}





void* my_memmove(void* a, const void* b, size_t n)
{
	void* c = a;
	if (a < b)
	{
		while (n--)
		{
			*(char*)a = *(char*)b;
			a = (char*)a + 1; b = (char*)b + 1;
		}
	}
	else
	{
		a = (char*)a + n-1; b = (char*)b + n-1;
		while (n--)
		{
			*(char*)a = *(char*)b;
			a = (char*)a - 1; b = (char*)b - 1;
		}
	}
	return c;
}


int main()
{
	int a[] = { 1,2,3,4,5,6,7,8 };
	int b[20] = { 0 };
	my_memmove(a+2, a, 20);

	int i = 0;
	for (i = 0; i < 8; i++)
	{
		printf("%d\n", a[i]);
	}
	return 0;
}